package com.snowfield.lb47.lbconfig.mapper;

import com.snowfield.lb47.lbconfig.domain.FrontProxy;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 前端代理Mapper接口
 *
 * @author snowfield
 * @date 2024-04-01
 */
public interface FrontProxyMapper {
    /**
     * 查询前端代理
     *
     * @param id 前端代理主键
     * @return 前端代理
     */
    public FrontProxy selectFrontProxyById(Long id);

    /**
     * 查询前端代理列表
     *
     * @param frontProxy 前端代理
     * @return 前端代理集合
     */
    public List<FrontProxy> selectFrontProxyList(FrontProxy frontProxy);

    /**
     * 新增前端代理
     *
     * @param frontProxy 前端代理
     * @return 结果
     */
    public int insertFrontProxy(FrontProxy frontProxy);

    /**
     * 修改前端代理
     *
     * @param frontProxy 前端代理
     * @return 结果
     */
    public int updateFrontProxy(FrontProxy frontProxy);

    /**
     * 删除前端代理
     *
     * @param id 前端代理主键
     * @return 结果
     */
    public int deleteFrontProxyById(Long id);

    /**
     * 批量删除前端代理
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteFrontProxyByIds(Long[] ids);

    /**
     * 修改前端代理状态
     *
     * @param id 前端代理主键
     * @param status 前端代理状态
     * @return 结果
     */
    public int changeProxyStatus(@Param(value = "id") Long id, @Param(value = "status") String status);

    /**
     * 根据前端代理名称查询前端代理
     *
     * @param proxyName 前端代理名称
     * @return 结果
     */
    public FrontProxy selectFrontProxyByName(String proxyName);

    /**
     * 根据前端代理绑定地址和端口查询前端代理
     *
     * @param bindIp   绑定地址
     * @param bindPort 绑定端口
     * @return 结果
     */
    public FrontProxy selectFrontProxyByBindIpPort(@Param(value = "bindIp") String bindIp, @Param(value = "bindPort") Integer bindPort);
}
